package com.zhidian.edm.service;

import com.zhidian.edm.entity.SysMenuPO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhidian.edm.param.AddMenuParam;
import com.zhidian.edm.param.UpdateMenuParam;
import com.zhidian.edm.vo.RouterVO;
import com.zhidian.edm.vo.SysMenuDetailVO;
import com.zhidian.edm.vo.SysMenuVO;
import jakarta.servlet.http.HttpServletRequest;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author sl
 * @since 2025-09-18
 */
public interface ISysMenuService extends IService<SysMenuPO> {


    List<RouterVO> getMenuRouters(HttpServletRequest req);
    /**
     * 查询所有菜单树，如果多个角色菜单都一样，使用此方法
     *
     * @return
     */
    List<SysMenuVO> getAllMenuTree();

    List<SysMenuVO> getAllMenuTreeAndNoVisible();

    /**
     * 获取角色列表的菜单树
     *
     * @param roleIds
     * @return
     */
    List<SysMenuVO> getCurrentUserMenuTree(List<Long> roleIds);


    SysMenuDetailVO getMenuInfoById(Long menuId);

    /**
     * 级联删除菜单
     * @param menuId
     */
    void deleteMenuById(Long menuId);
    /**
     * 获取当前角色的菜单树
     *
     * @param
     * @return
     */
    List<SysMenuVO> getMenuTreeByRoleId(Long roleId);

    /**
     * 添加菜单
     *
     * @param param
     */
    void addMenu(AddMenuParam param);

    /**
     * 修改菜单
     *
     * @param param
     */
    void updateMenu(UpdateMenuParam param);
}
